It is necessary in many businesses to provide rapid prototyping and development of software projects. A software development life cycle progresses from Planning, Analysis, and Design stages through to Technical Design, Construction and code Implementation. Typically, previous techniques are limited in productivity throughout such a development life cycle. In particular, the Design phase of many previous techniques is performed manually.
During design of such software, the human-to-computer interactions required to perform a business activity are defined. The interactions include transactions defined by its appearance (screen layout) and its behavior, i.e., what the transaction does, how it does it and how it relates to other transactions. The behavior is typically defined through a high level programming language such as an action diagram. Even simple conceptual design concepts may require hundreds of line of action diagram. Constructing and debugging these large action diagrams is very time intensive. A need thus exists for a technique which allows the designer to specify the behavior of a transaction with no coding involved.
Moreover, in prior development techniques, although developers naturally reuse concepts as part of design, there is no facility to reuse software in the same natural way. A design will often incorporate aspects of commonality, in order to provide a uniform interface, and will also be based on other similar successful designs. However, when the design definition is in code, it is very difficult to reuse parts of the design, especially where the code is heavily data dependent. A need has thus arisen for a technique which provides natural, object oriented mechanisms for software reuse.
Business demands the need for rapid prototyping and rapid development. Prototype designs are essential in helping the user agree with the requirements of a system, but all too often the implementation of a prototype is time consuming and code intensive.
Thus, a need has arisen for a method and system for knowledge based design, in which productivity is enhanced throughout a development life cycle. Also, a need has arisen for a method and system for knowledge based design, in which a manual design phase is replaced by an automated design process.